 //
//  Status.swift
//  Weobo
//
//  Created by 史亚洲 on 16/1/17.
//  Copyright © 2016年 itcast. All rights reserved.
//

import UIKit

class Status: NSObject {
    /*
    返回值字段	字段类型	字段说明
    created_at	string	微博创建时间
    id	int64	微博ID
    mid	int64	微博MID
    idstr	string	字符串型的微博ID
    text	string	微博信息内容
    source	string	微博来源
    favorited	boolean	是否已收藏，true：是，false：否
    truncated	boolean	是否被截断，true：是，false：否
    in_reply_to_status_id	string	（暂未支持）回复ID
    in_reply_to_user_id	string	（暂未支持）回复人UID
    in_reply_to_screen_name	string	（暂未支持）回复人昵称
    thumbnail_pic	string	缩略图片地址，没有时不返回此字段
    bmiddle_pic	string	中等尺寸图片地址，没有时不返回此字段
    original_pic	string	原始图片地址，没有时不返回此字段
    geo	object	地理信息字段 详细
    user	object	微博作者的用户信息字段 详细
    retweeted_status	object	被转发的原微博信息字段，当该微博为转发微博时返回 详细
    reposts_count	int	转发数
    comments_count	int	评论数
    attitudes_count	int	表态数
    mlevel	int	暂未支持
    visible	object	微博的可见性及指定可见分组信息。该object中type取值，0：普通微博，1：私密微博，3：指定分组微博，4：密友微博；list_id为分组的组号
    pic_ids	object	微博配图ID。多图时返回多图ID，用来拼接图片url。用返回字段thumbnail_pic的地址配上该返回字段的图片ID，即可得到多个图片url。
    ad	object array	微博流内的推广微博ID
    */
    //1.微博参创建时间
    var created_at: String?
    
    //2.id	int64	微博ID,在oc中:id是任意对象的关键字
    //Int NSInteger 在iPhone 5,5C,4S是32位的,int 64是long long
    var id: Int64 = 0
    
    //3.微博信息内容
    var text: String?
    
    //4.微博来源
    var source: String?
    
    //5.用户:如果不做任何特殊处理,最终会对应上一个字典
    var user: User?
    
    
    //6.计算型属性,可以实现url类型的转换
    var imageURLs: [NSURL]?
    
    //8.转发微博属性
    var retweeted_status: Status?

    
    //7.配图视图:
    var pic_urls: [[String: String]]? {
    
        didSet {
            //完成配图视图的数组的设置之后 开始给imageURLs赋值
            //didSet 只需要设置一次  但是 计算型属性 每次都要进行计算
            //快速判断 urls不为空 并且(&&) 不为空的urls的数量不为0
            if let urls = pic_urls where urls.count != 0 {
            //实例化属性
                imageURLs = [NSURL]()
                for item in urls {
                
                let urlString = item["thumbnail_pic"]
                //强制解包 表示相信后端一定能够给一个urlString 并且urlStirng一定可以转换为 NSURL对象
                    let imageURL = NSURL(string: urlString!)!
                    //添加图片url地址
                    imageURLs?.append(imageURL)
                
                
                
                }
            
            
            
            }
        
        
        
        }
        
    
    
    }
    
    //计算型属性,可以实现url类型的转换
    var iamgeURLs: [NSURL]?
    
    
    //添加计算型属性,计算到底是选择谁的图片数组
    var pictureImageURLs: [NSURL]? {
    
        if retweeted_status != nil{
            
            //转发微博
            return retweeted_status?.imageURLs
        }
    
        //原创微博
    
        return imageURLs
    }
    
    
    
    //构造方法
    init(dict: [String: AnyObject]) {
        super.init()
        setValuesForKeysWithDictionary(dict)
    }
    override func setValue(value: AnyObject?, forUndefinedKey key: String) {
        
    }
    
    //重写KVC赋值的方法
    override func setValue(value: AnyObject?, forKey key: String) {
        if key == "user" {
            //value是一个字典
            if let dict = value as? [String: AnyObject] {
                
                user = User(dict: dict)
                //return  非常非常关键  前面的字典转模型 ,等于白做
                return
                
            }
            
        }
       // retweeted_status	object	被转发的原微博信息字段，当该微博为转发微博时返回
        if key == "retweeted_status" {
            //value为一个对象
            if let dict = value as? [String: AnyObject] {
            
            //能够转化为[String: AnyObject] 字典对象,字典转模型
            retweeted_status = Status(dict: dict)
      
                return

            }

        }
        
        super.setValue(value, forKey: key)
    }
    
    
    //重写对象的描述信息
    override var description: String {
        
        //使用KVC方式获取对象的字典信息
        let keys = ["created_at","id","text","source"]
        let dict = self.dictionaryWithValuesForKeys(keys)
        return dict.description
        
        
        
    }
    
    
}
